perm filename XGP.PUB[TH,ROB]1 blob sn#488710 filedate 1979-12-01 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	.IODEVICE( XGP,440,|Xerox Graphics Printer Interface|)
C00004 00003	CONO XGP,
C00009 00004	CONI XGP,
C00010 00005	DATAO XGP,
C00012 00006	PHYSICAL:
C00014 00007	XGP cable card
C00016 00008	USAGE:
C00023 ENDMK
C⊗;
.IODEVICE( XGP,440,|Xerox Graphics Printer Interface|)

INTRODUCTION:
The Xerox Graphics Printer (XGP) makes hard copy form raster bit matrices.
The paper is 8.5 inches wide and any length.  The line is 1536 bits wide.
The XGP has a paper cutter that can be used in two modes.  The "CUT NOW"
command cuts the end of the paper off.  This is 22 inches %2ahead of%1 the
line you are printing now.  Once upon a time, the "MARK & CUT" command 
put a mark on the paper at the current line, which got cut when the mark
reached the cutter bar.  This never worked too reliably, so this function
is handled in software now (by waiting the right amount of time, and doing
a "CUT NOW" command).  For the record, it should be mentioned that the
"MARK & CUT" command causes some relay inside the XGP to go 'tic'.

The interface has two line buffers. Each buffer is 2K X 1 bits,
and stores one scan line.
The essence of operation is that one
buffer is loaded while the other is feeding bits out to the XGP.
When the XGP has swallowed an entire scanline, it will interrupt if
the DONE ENABLE bit is set (see below).
At this point you would swap buffers and begin to load the other
buffer, and the process repeats.

CONO XGP,
18:19	600000		unused (and ignored)
20:23	170000		OP code (detailed below)
24:35	007777		Datum - format depends on OP code

CONO XGP,14XXXX		Load column address register
24:35	007777		Starting column number

    This command loads the column address register of the buffer currently
    selected.  All commands that load the buffer will start loading at
    this column and leave the column address register pointing one column
    beyond the last bit loaded.

    The column address register must be zeroed %2before%1 swapping buffers
    so that the XGP unloads the buffer from the beginning.

CONO XGP,15XXXX		Load ones
24:35	007777		Number of ones to load

    This command writes the specified number of 'ones' in the current
    buffer starting at the current column.  This command takes about (N
    * 120)ns, so be sure to check the NZ bit (see CONI below) before
    sending any more commands.  This command might be used for making
    solid lines across the page.

CONO XGP,16XXXX		Control Command
24:28	007600		unused
29      000100  DONENB  Done Enable.  Setting this bit enables the DONE
			interrupt, which will come true when the XGP has
			finished with its current scan line.
30      000040  BLANK   Setting the BLANK bit will supress the video data to the
			XGP, thus resulting in white paper.
31      000020  PAPER   The PAPER bit controls paper motion.  Turn it on, and
			the paper will start moving.  Refresh it every 10 ms or
			so, and the paper will keep moving.  If you allow it to
			die (by not refreshing it), the printer will slew 22
			inches of paper and stop.
32      000010  CLRDON  Clear Done.  Setting this bit will clear the DONE
			interrupt flag.
33:35   000007  PIA     PI channel assignment.

CONO XGP,17XXX	Buffer & Paper commands
24:32   007770  unused
33      000004  SWPBUF  Swap line buffers.  This swaps the 'current' buffer; the
			XGP will read out of the buffer you were just writing
			into, and you start writing into the buffer the XGP was
			previously reading out of.  Note that you must zero the
			bit address (see OP = 14 above) of your buffer before
			giving it to the XGP.
34      000002  CUTNOW  This cuts the paper off right where it is.  Remember
			that the line you just printed is still 22 inches away
			from the cutter bar.
35      000001  MARKIT  Mark & Cut. This command use to mark the paper for
			subsequent cutting, but the mechanism proved to be
			innacurate and unreliable.  The hardware has been
			removed, and the function is implemented in software.

CONI XGP,
18:28	777600	unused
29	000100	XGPSIK	The XGP is sick for some reason (paper out, web out,
			jam...)
30	000040	VIDENB	This bit will be on during scan line, off during
			retrace.
31	000020	NZ	This bit will be on when the interface is ready for more
			video data.
32	000010	DONE	The XGP has finished the current scan line, and is ready
			for you to swap buffers.
33:35	000007	unused	(may become the PI channel assignment)

DATAO XGP,
18	400000		unused
19	200000	0	Load sixteen bits of video data
20:35	177777		Video data. 

    This is your basic data transfer instruction.  The sixteen bits of
    data in bits 20:35 are written into the current buffer starting at the
    current column.  The column register is incremented by sixteen.  This
    instruction takes about two microseconds.

DATAO XGP,
18	400000		unused
19	200000	1	Load variable width video data
20:31	177760		Video data.
32:35	000017	WIDTH	Number of bits (columns) to load

    This instruction lets you output something less than sixteen bits of
    video data.  The WIDTH field specifies how many bits of video data are
    in bits 20:31.  That many bits are written into the current buffer,
    and the column register is incremented by that amount.

    This command is typically used when unpacking 36 bit words.  Two
    16-bit chunks are shipped out using the standard DATAO command, and
    the remaining 4 bits are sent using this command.

    This instruction takes WIDTH*120 nanoseconds, which will always be
    less than 1.5 microseonds.

DATAI XGP,
not used.

PHYSICAL:

The XGP interface steals a few slots of the P2 TTL-IOBus.  Not surprisingly,
it is a TTL IOBus device.  It is build on several cards worth of W943 DEC
wire wrap boards, and has a two pieces of memory bus cable to tie it to
the XGP.  Level convters live in slot B08 of the interface, the cables are
in slot AB07.  The XGP works with signal levels of -12V (true) and 0v (false).
The cables end up in slot 25 of the XGP card cage.

  signals to the XGP from the interface:

    video
    sync
    cut now
    mark&cut
    run

  signals to the interface from the XGP:
   
    paper low
    xgp sick (paper, web, etc)
    
XGP cable card
The cables inteconnecting the XGP and the interface plug into 
card 25 in the card cage assembly in the XGP.  Here are the signals
appearing on each pin of that card.  Few of these signals are brought
out on the cables.

   pin	flavor	to/from		desc
J25-01		
J25-02		
J25-03		
J25-04		
J25-05		
J25-06		J17-03		GND
J25-07	-	<NC>
J25-08		J14-29
J25-09		J08-21
J25-10		
J25-11		J08-13
J25-12		J07-09
J25-13		J14-15
J25-14		
J25-15		
J25-16		J27-15		"signal B"?
J25-17		J07-11
J25-18		J09-14
J25-19		J17-17
J25-20		J17-19
J25-21		J17-01
J25-22	←			Paper Low
J25-23	←	J17-05		XGP Sick (drum,web,paper)
J25-24	→	J07-27		Video sync
J25-25	→			Cut Immediate
J25-26	→	J13-06		Mark & cut
J25-27	→	J07-05		Video in
J25-28	→	J16-19		Run
J25-29		J09-11
J25-30		J28-19
J25-31				Retrace
J25-32		
J25-33		-12V
J25-34		+12V
J25-35		GND
USAGE:
  A typical operational sequence would thus consist of the following
  commands:
    ZERO BIT ADDRESS
    LOAD BUFFER WITH DATAO COMMANDS
    ZERO BIT ADDRESS
    SWAP BUFFERS
    CHECK ¬XGPOK
    SET DONE ENABLE AND XGPON
    ZERO BIT ADDRESS
    LOAD BUFFER WITH DATAOS
    WAIT FOR INTERUPT
    ZERO BIT ADDRESS
    SWAP BUFFERS
    ZERO BIT ADDRESS
    LOAD BUFFER
    WAIT FOR INTERUPT AGAIN

    At appropriate places, turn on blanking and mark paper to be cut.

RELATED DOCUMENTS:
  P2SER[S,SYS]		Source code for driving the XGP.  Includes
			documentation on the data formats used in WAITS.